<?php

namespace app\common\model\Business;

use think\Model;
use think\Request;
use traits\model\SoftDelete;  // 引入底层软删除的拓展



class Business extends Model
{

    // 使用引入底层软删除的拓展
    use SoftDelete;

    //模型对应的是哪张表
    protected $name = "business";

    // 指定一个自动设置的时间字段
    // 开启自动写入
    protected $autoWriteTimestamp = true;

    // 设置字段的名字
    protected $createTime = "createtime"; //插入时设置字段名

    // 禁止 写入的时间段
    protected $updateTime = false;

    // 软删除的字段
    protected $deleteTime = 'deletetime';

    // 忽略数据表不存在的字段
    protected $field = true;

    // 追加属性（虚拟字段）
    protected $append = [
        'avatar_text',
        // 公海私海的
        'gender_text',
        'deal_text',
        'auth_text',
        'region_text', //地区字符串,
         'createtime_text', //时间获取器
    ];


    // 时间获取器
     public function getCreatetimeTextAttr($value, $data)
    {
        $createtime = isset($data['createtime']) ? trim($data['createtime']) : "";

        if(empty($createtime))
        {
            return '';
        } 

        return date("Y-m-d", $createtime);
    }


    public function getAvatarTextAttr($value, $data)
    {
        //获取域名部分
        $domain = Request::instance()->domain();
        $domain = trim($domain, '/');
        
        $avatar = isset($data['avatar']) ? $data['avatar'] : '';

        //如果为空就给一个默认图片地址
        if(empty($avatar) || !@is_file(".".$avatar))
        {
            $avatar = "/assets/img/avatar.png";
        }

        return $domain.$avatar;
    }

    // 获取拼接省市区的输出变量region
    public function getRegionTextAttr($value, $data)
    {
        $region = '';

        // 省
        $province = empty($data['province']) ? '' : $data['province'];
        if ($province) 
        {
            $province_text = model('Region')::where('code', $province)->value('name');
            $region = $province_text;
        }

        // 市
        $city = empty($data['city']) ? '' : $data['city'];
        if ($city) 
        {
            $city_text = model('Region')::where('code', $city)->value('name');
            $region .=  "-".$city_text;
        }

        // 区
        $district = empty($data['district']) ? '' : $data['district'];
        if ($district) 
        {
            $district_text = model('Region')::where('code', $district)->value('name');
            $region .= "-".$district_text;
        }

        //广东省-广州市-海珠区
        return $region;
    }


    // 公海私海的前三个方法
     public function getGenderList()
    {
        return ['0' => __('Gender 0'), '1' => __('Gender 1'), '2' => __('Gender 2')];
    }

    public function getDealList()
    {
        return ['0' => __('Deal 0'), '1' => __('Deal 1')];
    }

    public function getAuthList()
    {
        return ['0' => __('Auth 0'), '1' => __('Auth 1')];
    }


    // 公海私海的后三个方法
    public function getGenderTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['gender']) ? $data['gender'] : '');
        $list = $this->getGenderList();
        return isset($list[$value]) ? $list[$value] : '';
    }


    public function getDealTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['deal']) ? $data['deal'] : '');
        $list = $this->getDealList();
        return isset($list[$value]) ? $list[$value] : '';
    }


    public function getAuthTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['auth']) ? $data['auth'] : '');
        $list = $this->getAuthList();
        return isset($list[$value]) ? $list[$value] : '';
    }

    // 推荐人的连表查询
     public function parent()
    {
        return $this->belongsTo('app\common\model\Business\Business', 'parentid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 客户来源的连表查询，fa_business_source
     public function source()
    {
        return $this->belongsTo('app\common\model\Business\Source', 'sourceid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    //领取管理员
    public function admin()
    {
        return $this->belongsTo('app\common\model\Admin', 'adminid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 省的连表查询
    public function provinces()
    {
        return $this->belongsTo('app\common\model\Region', 'province', 'code', [], 'LEFT')->setEagerlyType(0);
    }

    // 市的连表查询
    public function citys()
    {
        return $this->belongsTo('app\common\model\Region', 'city', 'code', [], 'LEFT')->setEagerlyType(0);
    }

    // 区的连表查询
    public function districts()
    {
        return $this->belongsTo('app\common\model\Region', 'district', 'code', [], 'LEFT')->setEagerlyType(0);
    }


}
